package com.lighting.smssystem.service;

import com.lighting.smssystem.model.Metric;
import com.lighting.smssystem.model.User;
import com.lighting.smssystem.model.bo.UserList;

/**
 * Author LeeMaster
 */
public interface IUserService {

    /**
     * 列出用户信息
     * @param limit
     * @param offset
     * @return
     */
    UserList listUsers(Integer limit,Integer offset);

    /**
     * 列出管理员用户
     * @param limit
     * @param offset
     * @return
     */
    UserList listAdmin(Integer limit,Integer offset);

    /**
     * 创建用户
     * @param user
     * @return
     */
    int createAdminUser(User user);

    /**
     * 取消管理员权限
     * @param id
     * @return
     */
    int revokeAdmin(Long id);

    /**
     * 查询用户短信用量
     * @param userId
     * @return
     */
    Metric metric(Long userId);

    /**
     * 更新用户短信余量以及限制次数
     * @param metric
     * @return
     */
    int updateMetric(Metric metric);

    /**
     * 激活VIP 如果是VIP则激活，否则关闭
     * @param userId
     * @return
     */
    int activationVip(Long userId);

    /**
     * 注册用户
     * @param user
     * @return
     */
    int createUser(User user);

    /**
     * 判断手机号是否存在
     * @param phone
     * @return
     */
    boolean verifyPhone(String phone);

    /**
     * 通过phone 查询用户信息
     * @param phone
     * @return
     */
    User queryByPhone(String phone);

    /**
     * 通过用户id查询用户信息
     * @param userId
     * @return
     */
    User queryById(Long userId);

    /**
     * 更新用户信息
     * @param user
     * @return
     */
    int updateUser(User user);

    /**
     * 重置用户密码
     * @param id
     * @return
     */
    int resetUserPwd(Long id);

    /**
     * 减少短信用量
     * @param id
     * @param phoneSize
     * @return
     */
    int reduceMeric(Long id, int phoneSize);
}
